package com.rchat.pocmini.media;

import android.content.Context;
import android.view.SurfaceHolder;

import com.airtalkee.sdk.AirtalkeeMediaVideoControl;
import com.airtalkee.sdk.OnMediaVideoListener;
import com.airtalkee.sdk.OnMediaVideoPictureListener;

/**
 * Created by ljd on 2017/2/8.
 * <p>
 * AirtalkeeMediaVideoControl 接口规范
 */

public interface PocMediaVideoControlInterface {


    /**
     * 设置监听器，关心OnMediaVideoListener事件的实例，均需要通过此接口注册，否则将接受不到相应事件
     *
     * @param listener 监听器
     */
    void setOnVideoListener(OnMediaVideoListener listener);

    /**
     * 设置监听器，关心OnMediaVideoListener事件的实例，均需要通过此接口注册，否则将收不到相应事件
     *
     * @param listener 监听器
     */
    void setOnMediaVideoPictureListener(OnMediaVideoPictureListener listener);

    /**
     * 初始化（开启）系统相机
     *
     * @param context           Activity上下文
     * @param surfaceHolder     Surface监听器（实现SurfaceHolder接口）
     * @param cameraWidth       相机宽度
     * @param cameraHeight      相机高度
     * @param cameraOrientation 相机方向
     * @param cameraBitRate     相机比特率
     * @param cameraFrameRate   相机帧率
     */
    void videoActionCameraStart(Context context, SurfaceHolder surfaceHolder, int cameraWidth, int cameraHeight, int cameraOrientation, int cameraBitRate, int cameraFrameRate);

    /**
     * 重置视频录制相机（关闭并释放系统相机）
     */
    void videoActionCameraStop();

    /**
     * 设置相机方向监督
     *
     * @param context           Activity上下文
     * @param cameraOrientation 相机角度
     */
    void videoActionCameraOrientation(Context context, int cameraOrientation);

    /**
     * 视频录制开始
     *
     * @param sessionCode Session会话code
     */
    int videoActionRecorderStart(String sessionCode);

    /**
     * 结束录制视频，ResVideoStreamRecorderListener.onVideoRecorderStop
     *
     * @param videoId 开始录制时产生的相应video标识
     */
    void videoActionRecorderStop(int videoId);

    /**
     * 设置传输比特率
     */
    int getVideoRealtimeBitRate();

    /**
     * 设置闪光模式
     *
     * @param isOn 开关
     */
    boolean videoCameraFlash(boolean isOn);

    /**
     * 获取闪光模式
     */
    boolean videoCameraFlashIsOn();
}
